package com.jammingpro.blog_system.model;

import com.jammingpro.blog_system.enums.ResultStatus;
import lombok.Data;

/**
 * 返回结果包装类
 * @param <T>
 */
@Data
public class Result <T>{
    private ResultStatus status;    // 返回结果状态码
    private String errMsg;          // 错误信息
    T data;                         // 返回的真实数据

    /**
     * 成功-结果包装
     * @param data 返回的真实数据
     * @return  统一返回结果
     * @param <T>
     */
    public static <T> Result success(T data) {
        Result result = new Result();
        result.setStatus(ResultStatus.SUCCESS);
        result.setErrMsg("");
        result.setData(data);
        return result;
    }

    /**
     * 错误-结果包装
     * @param msg 错误信息
     * @return 统一返回结果
     */
    public static Result fail(String msg) {
        Result result = new Result();
        result.setStatus(ResultStatus.FAIL);
        result.setErrMsg(msg);
        result.setData(null);
        return result;
    }

    /**
     * 未登录-结果包装
     * @return 统一返回结果
     */
    public static Result nologin() {
        Result result = new Result();
        result.setStatus(ResultStatus.NOLOGIN);
        result.setErrMsg("用户未登录");
        result.setData(null);
        return result;
    }
}
